Distributed database systems that ensure the quality of services across an entire infrastructure enable users, among other things, to manage a diverse collection of devices, from numerous vendors, isolate the source of performance degradation, minimize recurring expenses, and provide detailed and executive level historical reporting.
FIG. 1 shows a conventional architecture for a distributed database, system 100. Conventional system 100 generally includes multiple backend servers 110 which are configured to collect and locally store data in one or more databases 120. The information which is collected by the backend servers 110A, 110B and stored on database 120A, 120B may vary, for example.
Schema information 125 for managing and accessing each database 120 is maintained independently in its respective backend database 120. As shown, local schema information 125A, 125B is used by the backend databases 120A, 120B for managing and accessing data.
A frontend server 130 is configured to request information from one or more of the backend servers 110, and process such requests. The backend servers 110 are in communication with the frontend server 130, for example, via one or more networks 140.
One or more users 145 may interface with the frontend server 130. In order to communicate with the backend server 110, the frontend server 130 may include schema information 135 for all backend server 110 in the system. A user 145 may submit a request to the frontend computer 130, which in turns submits requests to one or more of the backend servers 110.
In one example, the frontend server 130 may generate reports based on information collected by one or more of the backend servers 110. In response to such a request, each backend server 110 retrieves the information from its database 120 and then submits this information to the frontend server 130. The frontend server 130 may subsequently compile and process the information. Processed results may then be subsequently transmitted to the client computer 145. Requests for information may also be made between various backend servers 110.
In order for the various servers (i.e., the frontend server 130 and backend servers 110) to properly communicate amongst themselves, replication and synchronization processes must be performed. Replication copies information from one machine for subsequently transmitting to another machine. This process is not instantaneous. Thus, a synchronization process is used to reconcile different information and conflicts between machines. However, synchronization and replication in this conventional manner are error-prone and fragile.